package com.gzsxy.lambda;

public class TestLambda2 {

    //静态内部类
    static class Love implements Ilove {
        @Override
        public void love(int a) {
            System.out.println("i love you1" + a);
        }
    }


    public static void main(String[] args) {
        Ilove love = new Love();
        love.love(2);
        //局部内部类
        class Love implements Ilove {
            @Override
            public void love(int a) {
                System.out.println("i love you1" + a);
            }
        }


        love = new Ilove() {
            @Override
            public void love(int a) {
                System.out.println("i love you1" + a);
            }
        };
        love.love(3);

        //lambda表达式
        love = (int a) -> {
            System.out.println("i love you1" + a);
        };
        love.love(520);

        //简化一去掉参数类型
        love = (a) -> {
            System.out.println("i love you1" + a);
        };
        love.love(20);

        //简化2.简化括号
        love = a -> {
            System.out.println("i love you1" + a);
        };
        love.love(21);
        //简化3.去掉花括号
        love = a -> System.out.println("i love you1" + a);
        love.love(22);

        //总结：
        //lambda表达式只能有一行代码的情况下才能简化成为一行，如果有多行，
        //前提是接口为函数式接口
        //多个参数也可以去掉参数类型，要去掉都都去掉，必须加上括号


    }
}

interface Ilove {
    void love(int a);
}

